#ifndef MY_INC_APP_DEVICE_HANDLERS_H_
#define MY_INC_APP_DEVICE_HANDLERS_H_

#include <stdint.h>
#include "error_codes.h"

// 命令处理结果
typedef enum
{
    CMD_SUCCESS = 0, // 命令处理成功
    CMD_FAILED = -1, // 命令处理失败
} cmd_result_t;

// 命令处理函数类型定义
typedef cmd_result_t (*cmd_handler_t)(const uint16_t *data, uint8_t length);

// 命令处理器条目结构
typedef struct
{
    uint8_t cmd;             // 命令码
    uint8_t min_length;      // 最小数据长度
    cmd_handler_t handler;   // 处理函数
    const char *description; // 命令描述
} cmd_handler_entry_t;

// 命令码定义
#define CMD_VOLTAGE_CURRENT_SIGNAL 0x01 // 电压电流信号
#define CMD_SWITCH_SIGNAL 0x02          // 开关机信号
#define CMD_MODE_SWITCH 0x03            // 模式切换
#define CMD_PS_SETTING 0x04             // PS源模式设置参数
#define CMD_EL_SETTING 0x05             // EL载模式设置参数
#define CMD_EL_MODE_SWITCH 0x06         // EL载模式子模式切换

// 函数声明
cmd_handler_entry_t *find_cmd_handler(uint8_t cmd);
err_status_t register_cmd_handler(const cmd_handler_entry_t *handler);
err_status_t unregister_cmd_handler(uint8_t cmd);
void register_device_handlers(void);

#endif /* MY_INC_APP_DEVICE_HANDLERS_H_ */